﻿using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Web;
using UFIDA.U9.WSS.ProxyService.Models;
using UFIDA.U9.WSS.ProxyTestService.Models;

namespace UFIDA.U9.WSS.ProxyTestService.Interfaces
{
    [ServiceContract]
    internal interface IProxyTestService
    {
        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Bare)]
        ReturnMessage<CommonObject> TestConnection(CommonObject obj);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        ReturnMessage<List<BPSVType>> QueryBPSVType(string queryString);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        ReturnMessage<ProxyData> GetProxyData(string proxyType, bool useDataContract, int requestDataMaxExpandDepth);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        ReturnMessage<string> GetProxyType(BPSVType bpsvType);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        ReturnMessage<ProxyData> ReLoadProxy(ProxyData proxyData);

        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        ReturnMessage<string> ProxyDo(ProxyData proxyData);
    }
}